Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[자동차 경주] 김지원 미션 제출합니다. #113

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

kimgwon
Copy link

@kimgwon kimgwon commented Oct 28, 2024

kotlin-racingcar-precourse

기능 요구 사항

사용자 입력

  • camp.nextstep.edu.missionutils.ConsolereadLine()을 이용한다.
  • 자동차 이름을 입력 받는다.
  • 자동차 이름은 쉼표를 기준으로 구분한다.
  • 이름은 1 ~ 5자이다.
  • 횟수를 입력받는다.

출력

  • 이름 입력 요청 시, '경주할 자동차 이름을 입력하세요.' 문구를 출력한다.
  • 횟수 입력 요청 시, '시도할 횟수는 몇 회인가요?' 문구를 출력한다.
  • 실행 결과 출력 시, '실행 결과' 문구를 출력한다.
  • 매 라운드 실행 결과를 출력한다.
  • 최종 우승자를 출력 시, '최종 우승자 : ${user}'를 출력한다.
  • 우승자가 여러명이라면, 쉼표로 구분하여 출력한다.

자동차: Car

  • 자동차 객체는 name(이름), moving(이동 칸)을 변수로 가지고 있다.

자동차 이동: Car - move()

  • 4 이상이면 한 칸 이동한다.

자동차 경주: Race

  • 참여하는 자동차의 정보 cars: List<Car>를 변수로 갖는다.

우승자 결정: Race - getWinner()

  • 횟수동안 가장 많이 이동한 자동차가 우승한다.
  • 우승자는 여러명일 수 있다.

자동차 생성: CarController - makeCar()

  • 사용자에게 이름을 입력받으면 자동차를 하나씩 생성하고, cars로 만든다.

자동차 이동: CarController - moveCar()

  • camp.nextstep.edu.missionutils.RandomspickNumberInRange()로 나온 값을 Car-move()로 호출한다.

- Implemented readLine() to receive input from the user
- Implemented carNames() to receive car names from user
- Changed the visibility of readLine() function to private for encapsulation
- Implemented raceCount() to receive race count from the user
- Implemented getCarNames() to check the length of car name (1 to 5 characters)
- Implemented getRaceCount() to validate if the input is a number
…ound()

- Changed function name to better reflect the purpose of counting rounds in each race
- Changed function name to better reflect the purpose of counting rounds in each race
- Aligned with InputController's getRaceRound() method for consistency
- Implemented move() to moving + 1 when value >= 4
- Added cars property to manage a list of Car objects
- Required cars property for starting race
- Called Car.move() with random value (1~9)
- Implemented logic to find the Car with the maximum moving value
…splay results

- Added start logic to prompt user input for cars and rounds
- Implemented race with round results and final winner display
…troller

- Moved car name and race round validation logic to InputValidation
- Removed InputController and updated Input class accordingly
…nject dependencies

- Extracted input, output  to the main() in Application class
- Added addCars() method to handle car list
- Moved maxMoving() method in Race class
- Moved constants for better organization
- Updated relevant classes to use the extracted constants
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant